package com.canyou.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.canyou.system.entity.dict.ChildDictVO;
import com.canyou.system.entity.dict.DictVO;
import com.canyou.system.entity.dict.ParentDictVO;
import com.canyou.system.model.Dict;

import java.util.List;

/**
 * <p>
 * 数据字典 服务类
 * </p>
 *
 * @author oyj
 * @since 2021年11月16日
 */
public interface DictService extends IService<Dict> {
    /**
     * 获取子级分页列表
     *
     * @param page
     * @param name
     * @param parentId
     * @return
     */
    IPage<ChildDictVO> getChildPage(IPage<ChildDictVO> page, String name, Integer parentId);

    /**
     * 获取父级分页
     *
     * @param page
     * @param name
     * @param type
     * @return
     */
    IPage<ParentDictVO> getParentPage(IPage<ParentDictVO> page, String name, String type);

    /**
     * 获取字典数据数组
     *
     * @param type 字典类型
     * @return
     */
    List<DictVO> getDictList(String type);

    /**
     * 根据字典类型和值获取字典名称
     *
     * @param type
     * @param value
     * @return
     */
    String getDictName(String type, Integer value);

    /**
     * 获取类型值
     *
     * @param type
     * @param name
     * @return
     */
    Integer getDictValue(String type, String name);

    /**
     * 验证字段排序是否重复
     *
     * @param sort
     * @param dictId
     * @param type
     * @return
     */
    boolean validSortRepeat(Integer sort, Long dictId, String type);

    /**
     * 验证字典名称是否重复
     *
     * @param id
     * @param name
     * @return
     */
    boolean validDictName(Long id, String name);

    /**
     * 验证字典类型是否重复
     *
     * @param id
     * @param type
     * @return
     */
    boolean validDictType(Long id, String type);

    /**
     * 根据字段类型获取当前最大值
     *
     * @param type
     * @return
     */
    Integer getDictMaxValue(String type);

    /**
     * 验证字段值是否重复
     *
     * @param value
     * @param dictId
     * @param type
     * @return
     */
    boolean validDictValue(Integer value, Long dictId, String type);
}
